package com.gep.controlador.manager.ocorrenciasFrequentes;


import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.zkoss.zk.ui.Executions;
import org.zkoss.zul.Chart;
import org.zkoss.zul.Label;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.PieModel;
import org.zkoss.zul.SimplePieModel;
import org.zkoss.zul.Window;

import com.gep.dto.EquipamentoDTO;
import com.gep.dto.PecaDTO;

public class ControladorOcFrequentes extends Window {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public List<PecaDTO> listaPeca;

	public Chart grafico;

	public List<Object[]> dados;


	@SuppressWarnings("unchecked")
	public void carregarOcFrequentes() {
		listaPeca = new ArrayList<PecaDTO>();
		grafico = (Chart) this.getFellow("grafico");
		HttpServletRequest request = (HttpServletRequest) Executions
				.getCurrent().getNativeRequest();
		HttpSession session = request.getSession(false);
		dados = (List<Object[]>) session.getAttribute("dadosOcFrequentes");
		if (dados == null) {
			Executions.sendRedirect("/zul/home.zul");
		} else {
			//this.carregarListaItens();
			this.carregarGrafico();
			Object object[] = dados.iterator().next();
			EquipamentoDTO equipamentoDTO = (EquipamentoDTO) object[2];
			Label labelNomeEquipamento = (Label) this
					.getFellow("nomeEquipamento");
			labelNomeEquipamento.setValue("Equipamento: "
					+ equipamentoDTO.getNomeEquipamento());

		}

	}

	public void carregarListaItens() {
		Listbox listbox = (Listbox) this.getFellow("listBox");
		for (Object[] object : dados) {
			PecaDTO dto;
			dto = (PecaDTO) object[1];
			dto.setTempoMedioDeReparo(((Long) object[2]).intValue());
			listaPeca.add(dto);
		}
		ListModelList model = null;
		List items = listaPeca;
		if (model == null) {
			model = new ListModelList(items.size());
			listbox.setModel(model);
		}
		model.addAll(items);
		listbox.setVisible(true);
	}

	public void carregarGrafico() {
		PieModel pieModel = new SimplePieModel();
		for (Object[] object : dados) {
			Long quantidade;
			quantidade = (Long) object[1];

			pieModel.setValue((String)object[0],quantidade);
		}
		grafico.setModel(pieModel);
	}
}
